//
//  FGBaseViewController.swift
//  微博
//
//  Created by 陈金田 on 16/12/29.
//  Copyright © 2016年 陈金田. All rights reserved.
//

import UIKit
//这种写法类似于多继承
class FGBaseViewController: UIViewController {
    //表格视图，如果用户不登录，不用懒加载
    var tableView : UITableView?
    

    ///自定义导航条
   lazy  var navigationBar = UINavigationBar(frame: CGRect(x: 0, y: 0, width: UIScreen.cz_screenWidth(), height: 64))
   ///自定义导航条目--以后设置导航栏统一设置
   lazy var navItem = UINavigationItem()
    
   
    
    
    override func viewDidLoad() {

        super.viewDidLoad()

        setupdUI()
    }
   //重写title的didset方法
   override var title: String?{
        didSet {
            navItem.title = title
        }
    }
    
    //加载数据，具体实现由子类负责
    func loadData(){
        
        
    }
    
    

}


extension FGBaseViewController{
    
   func setupdUI(){
    
    view.backgroundColor = UIColor.cz_random()
    
     setupNavigationBar()
     setupTableView()
    }
    
    func setupNavigationBar(){
        view.addSubview(navigationBar)
        
        //将item设置给bar
        navigationBar.items=[navItem]
        
        navigationBar.barTintColor = UIColor.cz_color(withHex: 0xF6F6F6)
    }
    
    func setupTableView(){
        tableView = UITableView(frame: view.bounds, style: .plain)
        //用这个方法把tableview添加到控制器中，不用去调整navigationBar与tableview之间的层级关系
        view.insertSubview(tableView!, belowSubview: navigationBar)
        //设置数据源和代理
        tableView?.dataSource=self
        tableView?.delegate=self
        
        //设置内容缩进
        tableView?.contentInset = UIEdgeInsetsMake(navigationBar.bounds.height, 0, tabBarController?.tabBar.bounds.height ?? 49, 0)
        
    }
    
 
}

//extension中不能有属性，不能重写父类的方法，重写是子类的职类，扩展是对类的扩展
extension FGBaseViewController:UITableViewDataSource,UITableViewDelegate{
    
    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return 0
    }
    //基类只是准备方法，子类负责具体的实现
    //子类的数据源方法不需要super
    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        return UITableViewCell()
    }
    
    
}







